﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TankController.Dominio
{
    class EntradaSenoidal : EntradaPeriodica
    {
        public EntradaSenoidal(int periodo, double amplitudeMaxima, double anguloFase, double nivelDC)
        {
            this.periodo = periodo;
            this.amplitudeMaxima = amplitudeMaxima;
            this.anguloFase = anguloFase;
            this.nivelDC = nivelDC;
        }

        public override double GetValorAmplitude(int unidadeTempo)
        {
            return ((amplitudeMaxima) * Math.Sin((2 * Math.PI * unidadeTempo) / periodo) + anguloFase) + nivelDC;
        }

        public override void GerarPontoSinal(int unidadeTempo, double valorAmplitude, ISinal sinal)
        {
            sinal.AdicionarPonto(unidadeTempo, valorAmplitude);
        }
    }
}
